A prevalent conventional technique for presenting three-dimensional surfaces is to approximate the surface with polygons. For this technique a polygon mesh (mesh) is created comprised of a number of polygons connected by vertices. The vertices connecting each polygon of the mesh define the presentation of the polygon (i.e., the vertices define the polygon's shape and location). The surfaces of some objects, for example, computer-generated animated characters (characters), are not rigid. To effect the movement of a character, a mesh is laid over the character and the configuration of the mesh is changed, over time, to represent the movement of the character.
Typically the surface of the character is underlaid with bones, which are objects used to represent the skeletal structure of the character. A skinning algorithm is used to determine and control the deformation of the mesh based upon the movements of the bones. The skinning algorithm is responsible for calculating new positions for the vertices of the mesh for each frame of an animation. A surface that is deformed through use of a skinning algorithm is referred to as a skin.
Two typical skinning techniques are muscle simulation and bone matrices.
Muscle simulation effects deformation of skin meshes by accurately defining and modelling the skeletal structure of a character. Each bone is then replicated in detail and each muscle is modelled and attached to the appropriate bones. The skin of the character is then calculated to slide over the top of the bones and muscles. Movement and rotation of the bones causes stretching and compression of the attached muscles.
The muscle simulation technique has distinct disadvantages for many applications. For example, because the skeletal and muscular structure of the character is modelled in detail, an extensive knowledge of the character's anatomy is required. This is especially true if the physical properties of the muscles are also simulated to create secondary movement such as wobble and jiggle. Moreover, such modelling requires a great deal of set-up time and resources. That is, because collisions between the bones and muscles must be calculated, when many muscles are involved (for example, for a human character), the process requires a tremendous amount of computational resources.
Due to these limitations, muscle simulation is typically used in applications where time, costs, and computational resources are not restrictive (e.g., motion pictures). For other applications in which time, costs, and computational resources are relatively scarcer, including real-time applications such as computer games, skin deformation is effected using a bone matrix skinning technique. Bone matrix skinning (BMS) is a skinning technique in which the skin is deformed based upon transformation matrices (TMs) of the bones.
BMS uses bones to represent the skeletal structure of the character. For the purposes of this document, the term ‘bone’ refers to the object that drives the skinning solution. Thus, the term ‘bone’ does not describe the appearance of an object, but rather, its application.
The TM of a bone is used by the skinning algorithm to drive the deformation of the skin. TMs can be used to represent the position, rotation, and scaling of computer-generated three-dimensional objects or characters. TMs provide an efficient method for computers to handle hierarchies of objects. TMs can be scaled non-uniformly and distorted allowing the represented object to be squashed, stretched and skewed, thus presenting the deformation of the object's skin caused by the TM.
Typical BMS techniques use hierarchies of bones that define a skeleton. Each bone's TM is used by the skin system to move the vertices of the polygonal mesh around. As the bone moves around, the movement is transferred, via the TM, onto vertices that make up the skin of the character. This allows the use of a few bone objects to move many vertices.
FIGS. 1A and 1B illustrate the deformation of a character's skin through the use of a bone TM to control the movement of the vertices of a mesh comprising the skin in accordance with the prior art. Mesh 100, shown in FIG. 1A is comprised of six vertices a, b, c, d, ab, and cd, which are connected by four polygons, A, B, C, and D forming the mesh. Each vertex may be attached to one or more bones that influence the vertex. For example, as shown in FIG. 1A, vertices a and ab are attached to bone 105, vertices d and cd are attached to bone 110, and vertices c and b are each attached to both bone 105 and bone 110. FIG. 1B illustrates the rotation of bones 105 and 110 about a pivot point 115. As shown in FIG. 1B, if a vertex (e.g., vertices a and ab) is attached to one bone (i.e., bone 105), the vertex will move with the bone. For example, as bone 105 rotates about pivot point 115, vertices a and ab move in a simple circular arc around pivot point 115 also. As shown in FIG. 1B, as the bone is stretched or skewed, the attached vertices will be stretched and skewed in the same manner.
For typical applications, there will be many areas of a mesh in which multiple bones influence the same vertex. Such areas include, for example, the knee, shoulder, and elbow of a human character. As illustrated in FIGS. 1A and 1B, vertices c and d are each influenced by bones 105 and 110. In such cases, the vertices are influenced by a weighting (e.g., average) of the positions and orientations of each of the multiple bones. That is, the position of each vertex is the result of multiple bone TMs.
BMS techniques are relatively simple, fast, and computationally inexpensive, and are therefore widely used in many areas of three-dimensional animation. However, such methods are not without drawbacks. For example, when BMS techniques are applied to areas of a mesh where a large amount of deformation is required such as areas requiring a wide range of movement, the movements are impossible to simulate with typical skinning techniques. For example, the shoulder of a human character has a wide range of movement and yet simulation of movements easily performed by a real shoulder are problematic or impossible using a conventional BMS technique. Moreover, such techniques employ a rigid hierarchical movement of bones that is useful in defining the bone structure of a character, but limit skin movement about the bone joints and do not produce a realistic presentation of skin deformation in circumstances in which the shape of a character's skin is better defined by sub-surface fat and muscle. That is, typical techniques present a character as a bone covered with skin and have limited ability to depict the accompanying muscle movement.
FIG. 2 illustrates the unrealistic distortion inherent in conventional BMS techniques in accordance with the prior art. As shown in FIG. 2, mesh 201 is influenced by rectangular boxes (bones) 205 and 210. As deformation is effected, the area of the mesh 201 corresponding to the pivot point 215 of bones 205 and 210 is irregularly distorted resulting in an unrealistic deformation of the mesh 201. Presentation of such deformation is that of a bone covered with skin, lacking the appearance of the underlying muscle.